/**
 * ...
 * @author Franco Ponticelli
 */
/*
package uform.property;
import udo.util.Message;
import thx.util.Result;

import hxevents.Dispatcher;

interface IPropertyCollection<T>
{
	public function reset() : IPropertyCollection<T>;
	public function set(pos : Int, v : T) : IPropertyCollection<T>;
	public var onInsert(getOnAdd, null) : Dispatcher<Int>;
	public var onRemove(getOnAdd, null) : Dispatcher<{ pos : Int, removed : T }>;
	public var validators(getValidators,  null) : List <T -> Result> ;
	public function getOld(pos : Int) : Null<T>;
	public function get(pos : Int) : Null<T>; 
	public function isNull(pos : Int) : Bool;
	public function isValid(pos : Int) : Bool;
	public function isCollectionValid() : Bool;
	public function getMessages() : Array<Message>;
	public function getAlt(pos : Int, alt : T) : T;  
	public function add(v : T) : IPropertyCollection<T>;
	public function pop() : Null<T>;
	public function shift() : Null<T>;
	public function insert(pos : Int, v : T) : IPropertyCollection<T>; 
	public function removeAt(pos : Int) : Bool;
	public function remove(v : T) : Bool; 
}        
*/